#include "boost/lexical_cast.hpp"

namespace gen {
 
	inline index & 
	index::operator+(int n)
	{
		m_offset = n;
		return *this;
	}
    
	inline index &  
	index::operator-(int n)
	{
		return operator+(-n);
	}

    template <typename InfoT>
	void
	index::generate(InfoT & info) const
    {
		return info.append(
			boost::lexical_cast<typename InfoT::str_t>(
				info.current()-info.domain().first()+m_offset ));
    }
    
    ///////////////////////////////////////////////////////////////////////////
    //
    //  index class implementation
    //
    ///////////////////////////////////////////////////////////////////////////
    inline index
    index_g()
    {
        return index();
    }

}
